Performance testing is an important part of software development. A software application may very well have the ability to perform its intended functions. However, if it does not do so in a reasonable amount of time with the allocated resources, the software application will waste time, disappoint users, and fail expectations. In recognition of the importance of performance to successful software development, software development agreements typically include minimum performance specifications. Software not meeting such requirements will not meet the terms of the development agreement.
So, to ensure that software will perform as expected, software developers include performance testing as part of the development process. In many cases, however, it is not possible or desirable to test the software in a production environment. Therefore, a testing environment is used. The testing environment, however, must closely match the production environment. Otherwise, testing is of limited use and will not uncover performance problems.
A particularly challenging problem is devising an accurate test environment for web applications, which may involve many simultaneous users engaged in complex interactions with a complicated system.
Although various approaches have been taken to address such difficulties, there is still a need to address the complexities of emulating a production environment for a web application in an efficient and accurate manner.